package com.crm.dao.mapper.customMapper.productManagerCustomMapper;

import com.crm.model.entity.productManager.CustomerProduct;
import com.crm.model.qo.productManager.CustomerProductQO;
import com.crm.model.vo.orderManager.FinanceIndexOrderProductVO;
import com.crm.model.vo.productManager.CourseSubVO;
import com.crm.model.vo.productManager.CustomerProductVO;
import com.crm.model.vo.productManager.ProductVO;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author yincuimei
 * @Date 2021/1/27 10:54
 */
public interface CustomerProductCustomMapper {

    /**
     * 超级管理员--产品管理列表
     * @param customerProductQO ---产品列表查询参数
     * @param sortOrder         ---排序
     * @return
     */
    List<CustomerProductVO> selectCustomerProductVOList(@Param("customerProductQO") CustomerProductQO customerProductQO, @Param("sortOrder") String sortOrder);

    /**
     * 优惠券页面，为了和会员产品在同一列表展示，统一使用会员产品字段名
     * @param customerProductQO ---产品列表查询参数
     * @param sortOrder         ---排序
     * @return
     */
    List<Map<String,Object>> selectCustomerProductVOListForCoupon(@Param("customerProductQO") CustomerProductQO customerProductQO, @Param("sortOrder") String sortOrder);

    /**
     * 产品管理--上/下架
     * @param customerProduct
     * @return
     */
    int updateCustomerProductById(@Param("customerProduct")CustomerProduct customerProduct);

    /**
     * 查看产品详情
     * @param memberProductId 产品id
     * @return
     */
    List<CourseSubVO> queryCustomerProductDetailInfo(@Param("memberProductId")String memberProductId);

    /***
     * @Description:新增活动时查询产品列表
     * @Param: productName 产品名称
     * @Author: luojie
     * @Date: 2021/5/7 9:23
     */
    List<HashMap> selectAllProductDropDownList(String productName);

    /***
     * @Description:查询没添加的会员课程产品
     * @Param: productName 产品名称
     * @Param: memberProductRelationId 会员产品关系id
     * @Author: luojie
     * @Date: 2021/5/13 9:22
     */
    List<CustomerProductVO> selectNotAddCustomerMemberProductCourse(String productName,String memberProductRelationId,String typeCode);

    /**
     * 根据产品类型和id查询产品业绩换算比例
     * @param productCategories
     * @param productId
     * @return
     */
    BigDecimal selectProductPerformanceRatio(@Param("productCategories") String productCategories, @Param("productId") String productId);

    /**
     * 订单产品列表
     * @param dateUnit
     * @return
     */
    List<FinanceIndexOrderProductVO> financeIndexOrderProductList(@Param("dateUnit") Integer dateUnit,@Param("companyId") String companyId);

    List<Map<String,String>> selectProductByIdList(@Param("productIdList") List<Map<String,String>> productIdList);

    List<Map<String,String>> selectMemberProductByIdList(@Param("memberProductIdList") List<Map<String,String>> memberProductIdList);

    /**
     * 查询非会员上架产品
     * @Author pym
     * @Date  2021/12/29 17:01
     * @param
     * @return {@link {java.util.List<com.crm.model.vo.productManager.ProductVO>}}
     */
    List<ProductVO> selectNonMemberShelfProductList();
}
